package main

import "fmt"

type long struct {
	name string
	age int
}

func (aa long) setValue(a string, b int)  {
	aa.age = b
	aa.name = a
	fmt.Printf("&aa = %p\n", &aa)
}

func (bb *long) setPront(a string, b int)  {
	bb.age = b
	bb.name = a
	fmt.Printf("&bb = %p\n", bb)
}

func main()  {

	//调用数据类型绑定的函数是，可以不用管接收者是普通数据类型还是指针类型，因为go语言内部会进行转换，将接收者的参数转换为接收者要求的类型
	a := long{"C++", 19}
	fmt.Printf("a = %p\n", &a)

	//setValue 接受者是普通数据类型，不用转换
	a.setValue("Go", 22)
	//setPront 接收者是指针类型，我们传的确实普通变量，他会转换为&a
	a.setPront("Go", 22)
}